

// axios 封装 
import axios from "axios"

const baseURL = "http://0.0.0.0:2107/";     // 基路径 

const AUTH_TOKEN = "";
// axios.defaults.baseURL = baseURL;    // 使用反向代理就不需要使用axios基路径 
// axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';

import {Toast,Notify } from "vant"

export function showLoading(msg){
  msg = msg || ''
  Toast.clear(); 
  Toast.loading({
    message: msg,
    forbidClick: true,
  });
}
export function showSuccess(msg){
    msg = msg || '成功'
    Toast.clear(); 
    Notify({ type: 'success', message: msg });
}
export function showError(msg){
  Toast.clear(); 
  msg = msg || "失败"
  Notify({
    message: msg,
    color: '#ad0000',
    background: '#ffe1e1',
  });
}

// 拦截器   Interceptors

// 请求发送的拦截器  request
axios.interceptors.request.use(function (config) {
  // 成功
  // loading 
  showLoading();
  return config;
}, function (error) {
  // 失败
  showError("请求失败")
  return Promise.reject(error);
});

// 请求响应的拦截器  response
axios.interceptors.response.use(function (response) {
  // 成功
  Toast.clear();    //  清除Loading 效果
  return response;
}, function (error) {
  // 失败 
  showError("响应失败")
  return Promise.reject(error);
});

// get post patch delete  

export function get(url,params,headers){
  return new Promise(function(resolve,reject){
      axios.get(url,{
        params,
        headers,
      })
      .then(res=>{
        resolve(res.data); // axios请求的数据会 在 data 获取  res.data 
      })
      .catch(err=>{
        reject(err);
      })
  })
}

export function post(url,body,headers){
   return new Promise(function(resolve,reject){
      axios.post(url,body,{
        headers,
      })
      .then(res=>{
        resolve(res.data); // axios请求的数据会 在 data 获取  res.data 
      })
      .catch(err=>{
        reject(err);
      })
   })
}


export function patch(url,data,headers){
  return new Promise(function(resolve,reject){
      axios.patch(url,data,{
        headers
      })
      .then(res=>{
        resolve(res.data); // axios请求的数据会 在 data 获取  res.data 
      })
      .catch(err=>{
        reject(err);
      })
  })
}

export function Delete(url,body,headers){
   return new Promise(function(resolve,reject){
      axios.delete(url,body,{
        headers,
      })
      .then(res=>{
        resolve(res.data); // axios请求的数据会 在 data 获取  res.data 
      })
      .catch(err=>{
        reject(err);
      })
   })
}


export {
  baseURL,
  axios
}